﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MedicalAssistant.core
{
    [Serializable]
    public class Receita
    {
        public enum TipoDaReceita
        {
            Esquema1,
            Esquema1Reforcado,
            Esquema2,
            Esquema3
        } ;

        private TipoDaReceita tipo;
        private string descricao;

        public Receita(TipoDaReceita tipo, double peso)
        {
            this.tipo = tipo;

            if(tipo == TipoDaReceita.Esquema1)
            {
                this.descricao = montarReceitaEsquema1(peso);
            }
            else if (tipo == TipoDaReceita.Esquema1Reforcado)
            {
                this.descricao = montarReceitaEsquema1R(peso);
            }
            else if (tipo == TipoDaReceita.Esquema2)
            {
                this.descricao = montarReceitaEsquema2(peso);
            }
            else
            {
                this.descricao = montarReceitaEsquema3(peso);
            }
        }

        private string montarReceitaEsquema3(double peso)
        {
            double s1;
            double z1;
            double e1;
            double e2;
            double et;

            if (peso <= 20)
            {
                s1 = peso * 20;
                z1 = peso * 35;
                e1 = peso * 25;
                e2 = peso * 25;
                et = peso * 12;
            }
            else if (peso > 20 & peso <= 35)
            {
                s1 = 500;
                z1 = 1000;
                e1 = 600;
                e2 = 600;
                et = 250;
            }
            else if (peso > 35 & peso <= 45)
            {
                s1 = 1000;
                z1 = 1500;
                e1 = 800;
                e2 = 800;
                et = 500;
            }
            else
            {
                s1 = 1000;
                z1 = 2000;
                e1 = 1200;
                e2 = 1200;
                et = 750;
            }


            return "Administrar durante os primeiros 3 meses as drogas Estreptomicina " + s1 +
                   " Mg/dia, Etionamida " + et + " Mg/dia, Pirazinamida " + z1 +
                   " Mg/dia e Etambutol " + e1 + " Mg/dia. Durante os 9 meses seguintes, administrar Etionamida " + et + " Mg/dia e Etambutol " + e2 + " Mg/dia.";
        }

        private string montarReceitaEsquema2(double peso)
        {
            double r1;
            double h1;
            double z1;
            double r2;
            double h2;

            if (peso <= 20)
            {
                double dozagemInferior = peso*10;
                double dozagemSuperior = peso * 20;

                return "Administrar durante os primeiros 2 meses as drogas Rifampicina " + dozagemInferior + " a " + dozagemSuperior +
       " Mg/dia, Isoniazida " + dozagemInferior + " a " + dozagemSuperior + " Mg/dia e Pirazinamida " + peso * 35 +
       " Mg/dia. Durante os 7 meses seguintes, administrar Rifampicina " + dozagemInferior + " a " + dozagemSuperior +
       " Mg/dia e Isoniazida " + dozagemInferior + " a " + dozagemSuperior + " Mg/dia.";

            }
            else if (peso > 20 & peso <= 35)
            {
                r1 = 300;
                h1 = 200;
                z1 = 1000;
                r2 = 300;
                h2 = 200;
            }
            else if (peso > 35 & peso <= 45)
            {
                r1 = 450;
                h1 = 300;
                z1 = 1500;
                r2 = 450;
                h2 = 300;
            }
            else
            {
                r1 = 600;
                h1 = 400;
                z1 = 2000;
                r2 = 600;
                h2 = 400;
            }


            return "Administrar durante os primeiros 2 meses as drogas Rifampicina " + r1 +
                   " Mg/dia, Isoniazida " + h1 + " Mg/dia e Pirazinamida " + z1 +
                   " Mg/dia. Durante os 7 meses seguintes, administrar Rifampicina " + r2 +
                   " Mg/dia e Isoniazida " + h2 + " Mg/dia.";
        }

        private string montarReceitaEsquema1R(double peso)
        {
            double r1;
            double h1;
            double z1;
            double e1;
            double r2;
            double h2;
            double e2;

            if (peso <= 20)
            {
                r1 = peso * 10;
                h1 = peso * 10;
                z1 = peso * 35;
                e1 = peso * 25;
                r2 = peso * 10;
                h2 = peso * 10;
                e2 = peso * 25;
            }
            else if (peso > 20 & peso <= 35)
            {
                r1 = 300;
                h1 = 200;
                z1 = 1000;
                e1 = 600;
                r2 = 300;
                h2 = 200;
                e2 = 600;
            }
            else if (peso > 35 & peso <= 45)
            {
                r1 = 450;
                h1 = 300;
                z1 = 1500;
                e1 = 800;
                r2 = 450;
                h2 = 300;
                e2 = 800;
            }
            else
            {
                r1 = 600;
                h1 = 400;
                z1 = 2000;
                e1 = 1200;
                r2 = 600;
                h2 = 400;
                e2 = 1200;
            }


            return "Administrar durante os primeiros 2 meses as drogas Rifampicina " + r1 +
                   " Mg/dia, Isoniazida " + h1 + " Mg/dia, Pirazinamida " + z1 +
                   " Mg/dia e Etambutol " + e1 + " Mg/dia. Durante os 4 meses seguintes, administrar Rifampicina " + r2 +
                   " Mg/dia, Isoniazida " + h2 + " Mg/dia e Etambutol " + e2 + " Mg/dia.";
        }

        private string montarReceitaEsquema1(double peso)
        {
            double r1;
            double h1;
            double z1;
            double r2;
            double h2;

            if (peso <= 20)
            {
                r1 = peso * 10;
                h1 = peso * 10;
                z1 = peso * 35;
                r2 = peso * 10;
                h2 = peso * 10;
            }
            else if (peso > 20 & peso <= 35)
            {
                r1 = 300;
                h1 = 200;
                z1 = 1000;
                r2 = 300;
                h2 = 200;
            }
            else if (peso > 35 & peso <= 45)
            {
                r1 = 450;
                h1 = 300;
                z1 = 1500;
                r2 = 450;
                h2 = 300;
            }
            else
            {
                r1 = 600;
                h1 = 400;
                z1 = 2000;
                r2 = 600;
                h2 = 400;
            }


            return "Administrar durante os primeiros 2 meses as drogas Rifampicina " + r1 +
                   " Mg/dia, Isoniazida " + h1 + " Mg/dia e Pirazinamida " + z1 +
                   " Mg/dia. Durante os 4 meses seguintes, administrar Rifampicina " + r2 +
                   " Mg/dia e Isoniazida " + h2 + " Mg/dia.";
        }
    }
}
